home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Panorama / Panorama - Disk 28C (1988-04-27)(Pacific North-West Amigas Club)[WB].zip / Panorama - Disk 28C (1988-04-27)(Pacific North-West Amigas Club)[WB].adf / XLisp2.0 / readme.1st < prev    next >
Text File  |  1987-07-24  |  7KB  |  207 lines

  1. This is a list of new features in XLISP version 2.0 as of 16Dec87:
  2.  
  3. Symbols have two value cells, one for normal values and one for
  4. function values.  SETQ sets the normal value, DEFUN sets the
  5. functional value.
  6.  
  7. The most important change from version 1.7 to 2.0 of XLISP is that
  8. it is now possible to save XLISP's workspace between sessions.  This
  9. feature isn't necessarily part of every implementation of XLISP 2.0
  10. since it is controlled by a compile-time conditional.  Check the file
  11. 'xlisp.h' to see if the symbol SAVERESTORE is defined for your machine
  12. before you try to use these functions.
  13.  
  14. The &key lambda list keyword is now supported as are initialization forms
  15. for &optional, &key and &aux parameters.  The supplied-p variables are
  16. also supported for &optional and &key parameters.
  17.  
  18. New functions and special forms:
  19.  
  20. (save filename)        ; *** NOT IN ALL 2.0 IMPLEMENTATIONS ***
  21. (restore filename)    ; *** NOT IN ALL 2.0 IMPLEMENTATIONS ***
  22. (subseq string start [end])
  23. (open name &key :direction)
  24. (vector [expr]...)
  25. (block name [expr]...)
  26. (return-from name [value])
  27. (tagbody [tag|expr]...)
  28. (psetq [sym value]...)
  29. (flet ([sym lambda-list [body]...]...) [expr]...)
  30. (labels ([sym lambda-list [body]...]...) [expr]...)
  31. (macrolet ([sym lambda-list [body]...]...) [expr]...)
  32. (unwind-protect expr [expr]...)
  33. (when test [expr]...)
  34. (unless test [expr]...)
  35. (loop [expr]...)
  36. (progv symbols values [expr]...)
  37. (pprint expr [stream])
  38. (string< str1 str2 &key :start1 :end1 :start2 :end2)
  39. (string= str1 str2 &key :start1 :end1 :start2 :end2)
  40. (string> str1 str2 &key :start1 :end1 :start2 :end2)
  41. (string<= str1 str2 &key :start1 :end1 :start2 :end2)
  42. (string/= str1 str2 &key :start1 :end1 :start2 :end2)
  43. (string>= str1 str2 &key :start1 :end1 :start2 :end2)
  44. (string-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  45. (string-equal str1 str2 &key :start1 :end1 :start2 :end2)
  46. (string-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  47. (string-not-greaterp str1 str2 &key :start1 :end1 :start2 :end2)
  48. (string-not-equal str1 str2 &key :start1 :end1 :start2 :end2)
  49. (string-not-lessp str1 str2 &key :start1 :end1 :start2 :end2)
  50. (string-trim bag string)
  51. (string-left-trim bag string)
  52. (string-right-trim bag string)
  53. (string-upcase string &key :start :end)
  54. (string-downcase string &key :start :end)
  55. (nstring-upcase string &key :start :end)
  56. (nstring-downcase string &key :start :end)
  57. (symbol-function sym)
  58. (send obj msg [expr]...)
  59. (send-super msg [expr]...)
  60. (integerp expr)
  61. (floatp expr)
  62. (stringp expr)
  63. (arrayp expr)
  64. (streamp expr)
  65. (objectp expr)
  66. (fboundp expr)
  67. (characterp expr)
  68. (int-char expr)
  69. (char-int expr)
  70. (read-byte [stream])
  71. (write-byte expr [stream])
  72. (make-string-input-stream string [start [end]])
  73. (make-string-output-stream)
  74. (get-output-stream-string stream)
  75. (get-output-stream-list stream)
  76. (get-lambda-expression closure)
  77. (gcd expr1 expr2)
  78. (macroexpand form)
  79. (macroexpand-1 form)
  80. (format stream fmt &rest args)
  81.  
  82. The only FORMAT directives that are supported are ~A, ~S, ~% and ~~
  83. for now.  You can use NIL as the stream argument to get output to
  84. *standard-output* and T to have a string built and returned as the
  85. value of the FORMAT function.  Obviously, you can also use and stream
  86. as the value of the stream argument.  Using anything other than T will
  87. cause FORMAT to return NIL.
  88.  
  89. There is now a real character data type.  All functions that are
  90. supposed to return characters (like READ-CHAR) now do.
  91.  
  92. The reader is now capable of handling both single and multiple escapes.
  93. This means that it is possible to read the symbol |aBc| and get a symbol
  94. with the print name "aBc".  The backslash can also be used as a single
  95. escape.  The same symbol could have been written \aB\c.
  96.  
  97. The read table now supports the character types :SESCAPE for single
  98. escape and :MESCAPE for multiple escapes.
  99.  
  100. The reader also supports the reader macros:
  101.  
  102.     #:symbol    an uninterned symbol
  103.     #| ... |#   a comment
  104.     #Onumber    an octal number
  105.     #Bnumber    a binary number
  106.  
  107. The following symbols preserve a history of values used by the
  108. read-eval-print loop:
  109.  
  110.     -        the current input expression
  111.     +        the last expression read
  112.     ++        the previous value of +
  113.     +++        the previous value of ++
  114.     *        the result of the last evaluation
  115.     **        the previous value of *
  116.     ***        the previous value of **
  117.  
  118. The global symbol *PRINT-CASE* was added to control the output case of
  119. symbols.  Its default value is :UPCASE which will cause symbols to
  120. be printed in uppercase.  You can change it to :DOWNCASE to get symbols
  121. to print in lowercase.
  122.  
  123. I have added the functions FIRST, SECOND, THIRD, FOURTH and REST as
  124. synonyms for CAR, CADR, CADDR, CADDDR and CDR.
  125.  
  126. Changed the default value of *print-case* to :upcase.
  127.  
  128. Added macros to init.lsp for:
  129.  
  130.     (defvar sym &optional val)
  131.     (defparameter sym val)
  132.     (defconstant sym val)
  133.  
  134. These symbols control the format in which numbers are printed.  They
  135. should be set to printf format strings.
  136.  
  137.     *integer-format*    (default is "%d" or "%ld")
  138.     *float-format*     (default is "%g")
  139.  
  140. (substr string start [length]) is replaced by:
  141.     (subseq string start [end])
  142.  
  143. (openi name) is replaced by: (open name :direction :input)
  144. (openo name) is replaced by: (open name :direction :output)
  145.  
  146. OPEN, LOAD, SAVE and RESTORE take strings or symbols as file names.
  147. If a symbol is given, the print name of the symbol is used as the base
  148. filename and the default extension (if any) is appended.
  149.  
  150. Renamed MEM to ROOM and TRANSCRIPT to DRIBBLE.
  151.  
  152. Added a trace facility.  The evaluator will now print trace
  153. information for function and macro calls.  The names of the
  154. functions and macros to trace should be in a list that is stored
  155. as the value of *TRACELIST*.
  156.  
  157. Added macro definitions for TRACE and UNTRACE to "init.lsp".
  158. Trace output goes to the stream that is the value of *TRACE-OUTPUT*.
  159.  
  160. Removed the hard wired prompting from READ.  There is no longer
  161. an unmatched left paren counter, but the debug level prompt remains.
  162.  
  163. The symbols *ERROR-OUTPUT* and *DEBUG-IO* have been added and
  164. are bound to streams that are used for error output and debug
  165. i/o respectively.
  166.  
  167. The symbol *GC-HOOK* has been added.  If it is bound to a function
  168. of two arguments, that function will be called after the garbage
  169. collector runs.  The two parameters are the total number of nodes
  170. and the number free after the garbage collection.
  171.  
  172. Added the function (COMMAND-POINT-SIZE <n>) to the Macintosh version
  173. to set the point size for the text in the command window.  The default
  174. point size is 9.
  175.  
  176. The SEND-SUPER function replaces the :SENDSUPER message to objects.
  177. All messages must be sent using either the SEND function or the
  178. SEND-SUPER function.  In other words, the syntax:
  179.  
  180.     (Class :new '(a b c))
  181.  
  182. must now be written as:
  183.  
  184.     (send Class :new '(a b c))
  185.  
  186. and
  187.  
  188.     (self :sendsuper :msg 1 2 3)
  189.  
  190. must now be written as:
  191.  
  192.     (send-super :msg 1 2 3)
  193.  
  194. This is because the CAR of a form is no longer evaluated.  To get the
  195. effect of having the function position evaluated, use the FUNCALL form.
  196.  
  197. The syntax of LOAD has changed from:
  198.  
  199.     (load name [verbose-flag [print-flag]])
  200.  
  201. to:
  202.  
  203.     (load name &key :verbose :print)
  204.  
  205.  
  206.  
  207.